package dataStructure.queue;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

//jdk自带的queue


/**
 * offer，add 区别：
 *
 * 一些队列有大小限制，因此如果想在一个满的队列中加入一个新项，多出的项就会被拒绝。
 *
 * 这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常，而只是得到由 offer() 返回的 false。
 *
 * poll，remove 区别：
 *
 * remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似， 但是新的 poll() 方法在用空集合调用时不是抛出异常，只是返回 null。因此新的方法更适合容易出现异常条件的情况。
 *
 * peek，element区别：
 *
 * element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似，在队列为空时， element() 抛出一个异常，而 peek() 返回 null。
 */
public class QueueAPI {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        queue.poll(); //队头出列
        Object[] objects = queue.toArray();
        System.out.println(Arrays.toString(objects));
        System.out.println("--------------");
        System.out.println(queue.element());

    }
}
